﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entity.Framework;
using Business.Operations;

namespace HPDMAS.UserControls
{
    public partial class MusabakaDetay : System.Web.UI.UserControl
    {
        private int _musabakaId;
        public int sehirId;
        public int sezonId;
        private int _ligId;
        private Musabaka m;
        private List<Musabaka> srcMusabaka;
        DropDownList ddlHakem;
        DropDownList ddlGozlemci;
        DropDownList ddlYardimciHakem1;
        DropDownList ddlYardimciHakem2;
        TextBox txtHakemYolUcreti;
        TextBox txtYardimciHakem1YolUcreti;
        TextBox txtYardimciHakem2YolUcreti;
        TextBox txtGozlemciYolUcreti;
        CheckBox chbHakemDeplasmanMi;
        CheckBox chbYardimciHakem1DeplasmanMi;
        CheckBox chbYardimciHakem2DeplasmanMi;
        CheckBox chbGozlemciDeplasmanMi;
        private decimal _hakemYolUcreti;
        private decimal _yardimciHakem1YolUcreti;
        private decimal _yardimciHakem2YolUcreti;
        private decimal _gozlemciYolUcreti;
        private bool _hakemDeplasmanMi;
        private bool _yardimciHakem1DeplasmanMi;
        private bool _yardimciHakem2DeplasmanMi;
        private bool _gozlemciDeplasmanMi;
        private string _hakemAdiSoyadi;
        private string _yardimciHakem1AdiSoyadi;
        private string _yardimciHakem2AdiSoyadi;
        private string _gozlemciAdiSoyadi;
        private int _hakemNfsId;
        private int _yardimciHakem1NfsId;
        private int _yardimciHakem2NfsId;
        private int _gozlemciNfsId;
        private int _hakemId;
        private int _yardimciHakem1Id;
        private int _yardimciHakem2Id;
        private int _gozlemciId;
        private int _hakemUcretId;
        private int _yardimciHakem1UcretId;
        private int _yardimciHakem2UcretId;
        private int _gozlemciUcretId;
        private decimal _hakemVarsayilanUcreti;
        private decimal _yardimciHakem1VarsayilanUcreti;
        private decimal _yardimciHakem2VarsayilanUcreti;
        private decimal _gozlemciVarsayilanUcreti;
        private string _hakemGorevAdi;
        private int _hakemGorevId;
        private string _yardimciHakem1GorevAdi;
        private int _yardimciHakem1GorevId;
        private string _yardimciHakem2GorevAdi;
        private int _yardimciHakem2GorevId;
        private string _gozlemciGorevAdi;
        private int _gozlemciGorevId;
        private decimal _hakemYuzdeElliDeplasmanUcreti;
        private decimal _yardimciHakem1YuzdeElliDeplasmanUcreti;
        private decimal _yardimciHakem2YuzdeElliDeplasmanUcreti;
        private decimal _gozlemciYuzdeElliDeplasmanUcreti;
        private decimal _hakemNetUcret;
        private decimal _yardimciHakem1NetUcret;
        private decimal _yardimciHakem2NetUcret;
        private decimal _gozlemciNetUcret;
        private decimal _hakemDernekKesintisi;
        private decimal _yardimciHakem1DernekKesintisi;
        private decimal _yardimciHakem2DernekKesintisi;
        private decimal _hakemKesintisizUcret;
        private decimal _yardimciHakem1KesintisizUcret;
        private decimal _yardimciHakem2KesintisizUcret;

        protected void Page_Load(object sender, EventArgs e)
        {
            _musabakaId = Convert.ToInt32(Request.QueryString["musabakaId"]);
            _ligId = MusabakaOperation.LigIdGetByMusabakaId(_musabakaId);

            GelenIdDegeriIleEntityNesnesiniGetir();
            DetailsViewDoldur();
            DetailsViewIcindekiKontrollerinIdleriniGetir();

            //MACGOREV
            _hakemGorevAdi = "Hakem";
            _hakemGorevId = MacGorevOperation.MacGorevIdGetByMacGorevAdi(_hakemGorevAdi);
            _yardimciHakem1GorevAdi = "Yardımcı Hakem";
            _yardimciHakem1GorevId = MacGorevOperation.MacGorevIdGetByMacGorevAdi(_yardimciHakem1GorevAdi);
            _yardimciHakem2GorevAdi = "Yardımcı Hakem";
            _yardimciHakem2GorevId = MacGorevOperation.MacGorevIdGetByMacGorevAdi(_yardimciHakem2GorevAdi);
            _gozlemciGorevAdi = "Gözlemci";
            _gozlemciGorevId = MacGorevOperation.MacGorevIdGetByMacGorevAdi(_gozlemciGorevAdi);

            //HAKEM UCRET ID
            _hakemUcretId = MacUcretOperation.MacUcretIdGetBySezonIdLigIdAndGorevId(sezonId, _ligId, _hakemGorevId);
            _yardimciHakem1UcretId = MacUcretOperation.MacUcretIdGetBySezonIdLigIdAndGorevId(sezonId, _ligId, _yardimciHakem1GorevId);
            _yardimciHakem2UcretId = MacUcretOperation.MacUcretIdGetBySezonIdLigIdAndGorevId(sezonId, _ligId, _yardimciHakem2GorevId);
            _gozlemciUcretId = MacUcretOperation.MacUcretIdGetBySezonIdLigIdAndGorevId(sezonId, _ligId, _gozlemciGorevId);

            _hakemVarsayilanUcreti = MacUcretOperation.MacUcretiGetByMacUcretId(_hakemUcretId);
            _yardimciHakem1VarsayilanUcreti = MacUcretOperation.MacUcretiGetByMacUcretId(_yardimciHakem1UcretId);
            _yardimciHakem2VarsayilanUcreti = MacUcretOperation.MacUcretiGetByMacUcretId(_yardimciHakem2UcretId);
            _gozlemciVarsayilanUcreti = MacUcretOperation.MacUcretiGetByMacUcretId(_gozlemciUcretId);
        }

        private void DetailsViewIcindekiKontrollerinIdleriniGetir()
        {
            ddlHakem = (DropDownList)this.dvMusabakaDetay.FindControl("ddlHakem");
            ddlGozlemci = (DropDownList)this.dvMusabakaDetay.FindControl("ddlGozlemci");
            ddlYardimciHakem1 = (DropDownList)this.dvMusabakaDetay.FindControl("ddlYardimciHakem1");
            ddlYardimciHakem2 = (DropDownList)this.dvMusabakaDetay.FindControl("ddlYardimciHakem2");
            txtHakemYolUcreti = (TextBox)this.dvMusabakaDetay.FindControl("txtHakemYolUcreti");
            txtYardimciHakem1YolUcreti = (TextBox)this.dvMusabakaDetay.FindControl("txtYardimciHakem1YolUcreti");
            txtYardimciHakem2YolUcreti = (TextBox)this.dvMusabakaDetay.FindControl("txtYardimciHakem2YolUcreti");
            txtGozlemciYolUcreti = (TextBox)this.dvMusabakaDetay.FindControl("txtGozlemciYolUcreti");
            chbHakemDeplasmanMi = (CheckBox)this.dvMusabakaDetay.FindControl("chbHakemDeplasmanMi");
            chbYardimciHakem1DeplasmanMi = (CheckBox)this.dvMusabakaDetay.FindControl("chbYardimciHakem1DeplasmanMi");
            chbYardimciHakem2DeplasmanMi = (CheckBox)this.dvMusabakaDetay.FindControl("chbYardimciHakem2DeplasmanMi");
            chbGozlemciDeplasmanMi = (CheckBox)this.dvMusabakaDetay.FindControl("chbGozlemciDeplasmanMi");
        }

        private void DetailsViewDoldur()
        {
            srcMusabaka = new List<Musabaka>();
            srcMusabaka.Add(m);
            dvMusabakaDetay.DataSource = srcMusabaka;
            DetailsViewBind();
        }

        private void GelenIdDegeriIleEntityNesnesiniGetir()
        {
            m = MusabakaOperation.MusabakaGetByMusabakaId(_musabakaId);
        }

        protected void dvMusabakaDetay_ModeChanging(object sender, DetailsViewModeEventArgs e)
        {
            if (e.NewMode == DetailsViewMode.Edit)
            {
                dvMusabakaDetay.ChangeMode(DetailsViewMode.Edit);
            }
            else if (e.NewMode == DetailsViewMode.Insert)
            {
                dvMusabakaDetay.ChangeMode(DetailsViewMode.Insert);
            }
            else
            {
                dvMusabakaDetay.ChangeMode(DetailsViewMode.ReadOnly);
            }

            DetailsViewBind();
        }

        private void DetailsViewBind()
        {
            dvMusabakaDetay.DataBind();
        }

        protected void dvMusabakaDetay_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
        {
            MusabakaGuncelle();
            DuzenlemeModundanListelemeModunaGec();
        }

        private void MusabakaGuncelle()
        {
            _hakemAdiSoyadi = ddlHakem.SelectedValue;
            _yardimciHakem1AdiSoyadi = ddlYardimciHakem1.SelectedValue;
            _yardimciHakem2AdiSoyadi = ddlYardimciHakem2.SelectedValue;
            _gozlemciAdiSoyadi = ddlGozlemci.SelectedValue;

            _hakemId = KullaniciOperation.KullaniciIdGetByKullaniciAdiSoyadi(_hakemAdiSoyadi);
            _yardimciHakem1Id = KullaniciOperation.KullaniciIdGetByKullaniciAdiSoyadi(_yardimciHakem1AdiSoyadi);
            _yardimciHakem2Id = KullaniciOperation.KullaniciIdGetByKullaniciAdiSoyadi(_yardimciHakem2AdiSoyadi);
            _gozlemciId = KullaniciOperation.KullaniciIdGetByKullaniciAdiSoyadi(_gozlemciAdiSoyadi);

            _hakemNfsId = KullaniciNfsOperation.KullaniciNfsIdGetByKullaniciId(_hakemId);
            _yardimciHakem1NfsId = KullaniciNfsOperation.KullaniciNfsIdGetByKullaniciId(_yardimciHakem1Id);
            _yardimciHakem2NfsId = KullaniciNfsOperation.KullaniciNfsIdGetByKullaniciId(_yardimciHakem2Id);
            _gozlemciNfsId = KullaniciNfsOperation.KullaniciNfsIdGetByKullaniciId(_gozlemciId);

            _hakemYolUcreti = Convert.ToDecimal(txtHakemYolUcreti.Text.Trim());
            _yardimciHakem1YolUcreti = Convert.ToDecimal(txtYardimciHakem1YolUcreti.Text.Trim());
            _yardimciHakem2YolUcreti = Convert.ToDecimal(txtYardimciHakem2YolUcreti.Text.Trim());
            _gozlemciYolUcreti = Convert.ToDecimal(txtGozlemciYolUcreti.Text.Trim());

            _hakemDeplasmanMi = chbHakemDeplasmanMi.Checked;
            _yardimciHakem1DeplasmanMi = chbYardimciHakem1DeplasmanMi.Checked;
            _yardimciHakem2DeplasmanMi = chbYardimciHakem2DeplasmanMi.Checked;
            _gozlemciDeplasmanMi = chbGozlemciDeplasmanMi.Checked;

            DeplasmanBilgisineGoreVarsayilanUcretleriYenile();

            //%10 KESİLMEDEN ÖNCEKİ ÜCRET
            _hakemKesintisizUcret = _hakemVarsayilanUcreti + _hakemYolUcreti;
            _yardimciHakem1KesintisizUcret = _yardimciHakem1VarsayilanUcreti + _yardimciHakem1YolUcreti;
            _yardimciHakem2KesintisizUcret = _yardimciHakem2VarsayilanUcreti + _yardimciHakem2YolUcreti;

            //DERNEK YÜZDE 10 ÜCRET HESAPLAMASI
            _hakemDernekKesintisi = _hakemKesintisizUcret * 10 / 100;
            _yardimciHakem1DernekKesintisi = _yardimciHakem1KesintisizUcret * 10 / 100;
            _yardimciHakem2DernekKesintisi = _yardimciHakem2KesintisizUcret * 10 / 100;

            //%10 KESİLDİKTEN SONRAKİ NET ÜCRET
            _hakemNetUcret = _hakemVarsayilanUcreti + _hakemYolUcreti - _hakemDernekKesintisi;
            _yardimciHakem1NetUcret = _yardimciHakem1VarsayilanUcreti + _yardimciHakem1YolUcreti - _yardimciHakem1DernekKesintisi;
            _yardimciHakem2NetUcret = _yardimciHakem2VarsayilanUcreti + _yardimciHakem2YolUcreti - _yardimciHakem2DernekKesintisi;
            _gozlemciNetUcret = _gozlemciVarsayilanUcreti + _gozlemciYolUcreti;

            m.HakemID = _hakemId;
            m.YardimciHakem1ID = _yardimciHakem1Id;
            m.YardimciHakem2ID = _yardimciHakem2Id;
            m.GozlemciID = _gozlemciId;
            m.HakemDeplasmanMi = _hakemDeplasmanMi;
            m.YardimciHakem1DeplasmanMi = _yardimciHakem1DeplasmanMi;
            m.YardimciHakem2DeplasmanMi = _yardimciHakem2DeplasmanMi;
            m.GozlemciDeplasmanMi = _gozlemciDeplasmanMi;
            m.HakemYolUcreti = _hakemYolUcreti;
            m.YardimciHakem1YolUcreti = _yardimciHakem1YolUcreti;
            m.YardimciHakem2YolUcreti = _yardimciHakem2YolUcreti;
            m.GozlemciYolUcreti = _gozlemciYolUcreti;
            m.HakemNetUcreti = _hakemNetUcret;
            m.YardimciHakem1NetUcreti = _yardimciHakem1NetUcret;
            m.YardimciHakem2NetUcreti = _yardimciHakem2NetUcret;
            m.GozlemciNetUcreti = _gozlemciNetUcret;
            m.HakemDernekKesintiBedeli = _hakemDernekKesintisi;
            m.YardimciHakem1DernekKesintiBedeli = _yardimciHakem1DernekKesintisi;
            m.YardimciHakem2DernekKesintiBedeli = _yardimciHakem2DernekKesintisi;
            m.HakemNfsID = _hakemNfsId;
            m.YardimciHakem1NfsID = _yardimciHakem1NfsId;
            m.YardimciHakem2NfsID = _yardimciHakem2NfsId;
            m.GozlemciNfsID = _gozlemciNfsId;
            m.DegisiklikTarihi = DateTime.Now;
            MusabakaOperation.MusabakaUpdate(m);
        }

        private void DeplasmanBilgisineGoreVarsayilanUcretleriYenile()
        {
            if (_hakemDeplasmanMi == true)
            {
                _hakemYuzdeElliDeplasmanUcreti = MacUcretOperation.YuzdeElliDeplasmanUcretiGetByMacUcretId(_hakemUcretId);
                _hakemVarsayilanUcreti = _hakemVarsayilanUcreti + _hakemYuzdeElliDeplasmanUcreti;
            }

            if (_yardimciHakem1DeplasmanMi == true)
            {
                _yardimciHakem1YuzdeElliDeplasmanUcreti = MacUcretOperation.YuzdeElliDeplasmanUcretiGetByMacUcretId(_yardimciHakem1UcretId);
                _yardimciHakem1VarsayilanUcreti = _yardimciHakem1VarsayilanUcreti + _yardimciHakem1YuzdeElliDeplasmanUcreti;
            }

            if (_yardimciHakem2DeplasmanMi == true)
            {
                _yardimciHakem2YuzdeElliDeplasmanUcreti = MacUcretOperation.YuzdeElliDeplasmanUcretiGetByMacUcretId(_yardimciHakem2UcretId);
                _yardimciHakem2VarsayilanUcreti = _yardimciHakem2VarsayilanUcreti + _yardimciHakem2YuzdeElliDeplasmanUcreti;
            }

            if (_gozlemciDeplasmanMi == true)
            {
                _gozlemciYuzdeElliDeplasmanUcreti = MacUcretOperation.YuzdeElliDeplasmanUcretiGetByMacUcretId(_gozlemciUcretId);
                _gozlemciVarsayilanUcreti = _gozlemciVarsayilanUcreti + _gozlemciYuzdeElliDeplasmanUcreti;
            }
        }

        private void DuzenlemeModundanListelemeModunaGec()
        {
            dvMusabakaDetay.ChangeMode(DetailsViewMode.ReadOnly);
            DetailsViewBind();
        }

        protected void dvMusabakaDetay_DataBound(object sender, EventArgs e)
        {
            if (this.dvMusabakaDetay.CurrentMode == DetailsViewMode.Edit)
            {
                ddlHakem = (DropDownList)this.dvMusabakaDetay.FindControl("ddlHakem");
                if (ddlHakem != null)
                {
                    ddlHakemDoldur();
                    ddlHakem.SelectedValue = MusabakaOperation.HakemNfsAdiSoyadiGetByMusabakaId(_musabakaId);
                }

                ddlGozlemci = (DropDownList)this.dvMusabakaDetay.FindControl("ddlGozlemci");
                if (ddlGozlemci != null)
                {
                    ddlGozlemciDoldur();
                    ddlGozlemci.SelectedValue = MusabakaOperation.GozlemciNfsAdiSoyadiGetByMusabakaId(_musabakaId);
                }

                ddlYardimciHakem1 = (DropDownList)this.dvMusabakaDetay.FindControl("ddlYardimciHakem1");
                if (ddlYardimciHakem1 != null)
                {
                    ddlYardimciHakem1Doldur();
                    ddlYardimciHakem1.SelectedValue = MusabakaOperation.YardimciHakem1NfsAdiSoyadiGetByMusabakaId(_musabakaId);
                }

                ddlYardimciHakem2 = (DropDownList)this.dvMusabakaDetay.FindControl("ddlYardimciHakem2");
                if (ddlYardimciHakem2 != null)
                {
                    ddlYardimciHakem2Doldur();
                    ddlYardimciHakem2.SelectedValue = MusabakaOperation.YardimciHakem2NfsAdiSoyadiGetByMusabakaId(_musabakaId);
                }
            }
        }

        private void ddlHakemDoldur()
        {
            ddlHakem.DataSource = KullaniciNfsOperation.KullaniciAdiSoyadiGetBySehirId(sehirId);
            ddlHakem.DataBind();
        }

        private void ddlGozlemciDoldur()
        {
            ddlGozlemci.DataSource = KullaniciNfsOperation.KullaniciAdiSoyadiGetBySehirId(sehirId);
            ddlGozlemci.DataBind();
        }

        private void ddlYardimciHakem1Doldur()
        {
            ddlYardimciHakem1.DataSource = KullaniciNfsOperation.KullaniciAdiSoyadiGetBySehirId(sehirId);
            ddlYardimciHakem1.DataBind();
        }

        private void ddlYardimciHakem2Doldur()
        {
            ddlYardimciHakem2.DataSource = KullaniciNfsOperation.KullaniciAdiSoyadiGetBySehirId(sehirId);
            ddlYardimciHakem2.DataBind();
        }
    }
}